Building a software construction set requires a lot of thought about what makes people not want to build things themselves, because it is too difficult, frustrating or painful to even start.
Exigy gets a huge amount of influence from other "software erector sets" like HyperCard, NewtonOS, Visual Basic, and Macromedia Director and Flash.
This page collects together the written material I used when building Exigy - a kind of living bibliography. I'll add more as I go along.
The first article is an interview with HyperCard creator Bill Atkinson. It was an interview done with author Danny Goodman, in his book The Complete HyperCard Handbook. I've retyped the (badly) OCR'd text below:
A Conversation with Bill Atkinson
Bill Atkinson, the creator of HyperCard, took time out during the last weeks of HyperCard development to talk with me about many issues surrounding the program's development and his aspirations for the product. The interview took place in what I would call a HyperCard community: his home in the hills at the far south end of the San Francisco Bay area. As he and I talked into a tape recorder in one part of the house, Dan Winkler, Bill's chief co-programmer, was in another part of the house making the HyperTalk language work faster. In yet another room, Marge Boots, a Macintosh artist, was busy exploring card and icon designs that would be included with the program. It was Memorial Day, but when Apple deadlines approach, it's "business as usual" seven days a week at this HyperCard colony.
Danny Goodman: A lot of people have different ways of describing HyperCard. How do you describe HyperCard?
Bill Atkinson: HyperCard is an authoring tool and an information organizer. You can use it to create stacks of information to share with other people or to read stacks of information made by other people. So it's both an authoring tool and sort of a cassette player for information.
Goodman: Where did the idea for HyperCard come from?
Atkinson: There were a lot of roots to it. One of the early contributors was the Magic Slate project that I worked on for a while, but that was later cancelled. Magic Slate was a laptop computer that had a full-page display and an all-graphical interface. We worked out some neat paradigms for breaking down the barriers to applications.
Goodman: Why was Magic Slate dropped?
Atkinson: It couldn't really happen in a short time frame. It wouldn't be cost effective for a lot of people. It would be too expensive for many people to get their hands on it.
Goodman: What happened then?
Atkinson: So I backed down to saying, "How much of what I've learned or dreamed about here in Magic Slate could I do on today's generation of computers?"
I started thinking that many more people would have a use for a computer if it did some different things than it does now. Right now, they're used mostly for word processing and spreadsheets and, I guess, lately, some graphics applications. But, I thought, in order to use one of those applications, you have to see yourself as being a creator of information. What do you do about the consumer of information? There are maybe twenty times as many people who want to read information.
Goodman: Was that a major turning point?
Atkinson: That's when I started thinking about gradually unfolding a path that starts with clicking and browsing — something that anybody could do and that would be useful for a lot of things. Then up to some painting, which isn't that much harder if you've used something like MacPaint before. And then onto cutting and pasting buttons and making some authoring tools in a kind of erector set approach. You're really making a program. But you're making it just by cutting and pasting little pieces. And then, finally, all the way up to teaching what I do, which is programming. The HyperTalk language is sort of a humane starting language for people who want control of their computer. They are not interested in programming per se. The language is something that can be a good first introduction to programming and will provide enough power that most people don't have to go into Assembler language and what not.
Goodman: HyperCard seems like many different programs in one. You have a graphics program, you have a programming environment, and you have the ability to do a lot of things with those tools.
Atkinson: A lot of its multiple facet is because you're looking at things made with HyperCard. The HyperCard program itself is an authoring tool, but the things that it creates are applications in their own right. So you look at HyperCard as it comes. It comes with an address book and an appointment calendar, and a dozen stacks that are like applications. One part of the multiplicity comes because you're looking at some sample tapes that came with your cassette player. The other part of it is just that it is an authoring tool, with graphics and text intermixed.
Goodman: From the authoring standpoint, when someone looks at the manual that comes with HyperCard, the program doesn't seem that complex. But then they heft this rather thick book and they see an enormous program with a lot of depth. Is that going to frighten some people away?
Atkinson: Well it's very important that one's first interaction with HyperCard be a positive experience. You've got to have success right away or you'll never go on to growing into some of the more powerful features. That's why, in fact, I've gone to great lengths to hide some of the power in the early stages. It's like prerequisites for courses in college. In the same way, I hope that beginners can come into this with the idea of, "Well, I can just click to browse around, and I can click and type to add cards," and they can use it right away. There are a number of good strong resting points that let you say, "Okay, I understand browsing now," or "I understand typing now, and I can rest there for a while. Later I'll learn how to work all the painting tools."
Even in the language, when you get more into HyperTalk, there's this gentle gradual progression from typing things into the Message Box. You type 5/6 and press Return, and it calculates some number. And you say, "Okay, that's not much harder than a calculator, I think I can figure that out." But then you can type little things like go "Clip Art" and you learn that whatever command you type in there HyperCard will do. You learn one little step at a time. You say the date, carriage return, and there's today's date. You learn that before you learn about put the date into field 3. And you learn all that before you learn, "Oh you can get other things to type in these commands for you."
Goodman: How long have you been at HyperCard?
Atkinson: About two and a half years, almost three.
Goodman: Over that time, how have the basic features of HyperCard evolved? How have they evolved from your original plan?
Atkinson: My initial mockup was done with MacPaint documents and a text file that described the relationships between them. A button would have three attributes basically: a visual effect, a sound effect, and a destination. And that was initially all the buttons could do. But there was no language, because it was just a matter of choosing which of those attributes you wanted. But still the very quick branching from one place to another by touching hasn't changed much since then.
The card size changed, it used to be the same size as a MacPaint window, which is about one-half of the area of the card we're doing now. As HyperCard became more of an authoring tool, it became obvious that people really needed to be able to take over the whole screen, including the menubar, in order to control the complete look of what their application behaved like.
Goodman: Didn't you have some breakthroughs in handling graphics?
Atkinson: It went from being the card-specific graphics just being OR'ed on top of the background— where all you could do was add more black bits: You couldn't add more white bits — to a strategy of actually having mask and data so that the bit maps are all two bits deep and you can have opaque white. That was a major step and a major hurdle to get over. That was the point when I had to come up with the bit map compression because things just got totally out of hand. But I really wanted the flexibility and artistic ability of bit maps rather than using structured graphics, which just couldn't express the richness that I want for a user interface.
At one point, there were two completely different environments. There was the painting environment and the authoring environment, and I literally bank switched a whole hunk of code out, another hunk of code in. Those two were not integrated at all. They were very, very different palettes and very different behaviors. We've worked a lot toward integrating them now so that going back and forth isn't so painful and it's much more integrated. In fact, the latest stages of integration, as one of the last things along that line, is this business about actually being able to control the painting tools from the language, which gives a tremendous power for its memory cost. Now you can algorithmically compute things that you want to draw: charts and drawings and various plots and stuff like that.
Goodman: Any other evolutions?
Atkinson: When we went to full size and mask in data, there were big performance hits. Suddenly things got about fifteen times slower than MacPaint, and I had to figure out some whole new algorithms and ways to handle that. In fact, I took a room at a hotel near the beach and just camped out there in seclusion, away from anybody else, while I cracked getting the graphics stuff working. That was pretty nice when I got that working.
Goodman: For the painting tools, then, you've done far more than just carry over the MacPaint code.
Atkinson: You bet! It was disappointed me how little other programmers have done with the additional RAM that they've got. A lot of the shortcomings of MacPaint were strictly because I had to squeeze it into 128K bytes, when there was 22K of that on the screen and another good chunk in the system heap. But the whole resident code for MacPaint was 25K bytes. The resident code for HyperCard is more on the order of 250K. With more code, if you have more memory, you can do a lot more.
Some of the things I wanted to do in the original MacPaint I was able to do here, like having infinite Undo, and being able to select the last thing you just drew. They seemed like obvious things to me, and I don't know why other people haven't done them. Being able to operate on a lasso selection as a first class citizen means that you can really do everything to a lasso selection that you could do to a rectangular selection.
It costs memory when I'm in the Painting tools. It costs me seven additional buffers, each of which is the full size of a card. So seven times 22K on top of the six buffers that I normally have, that's where a lot of the memory is going. But these days, memory is cheap compared to the power that it gives. You can get a non-Apple upgrade from 512K to a megabyte for something like $200. If you were to buy a program for $200, you wouldn't be that put out. But I have really struggled trying to get this thing to run on a 512, not because of the cost, but because of the number of machines that are out there that are still 512s, and the hassle of going in and getting it upgraded. I just wasn't able to do it for the painting tools. I may still be able to do it for a browse-only kind of thing.
Goodman: As far as the functionality of the program goes, has the function or the scope of the program changed over this period, in light of the way the Macintosh has been accepted or perceived by different categories of users?
Atkinson: Not because of what's happening with the Macintosh, but it certainly has changed a lot. The initial intention was for it to be an authoring system, but not necessarily a programming system. Through HyperTalk, it has really gained much more generality and has became much more of an erector set for building applications.
Goodman: For the programmers in the audience, how was your software development environment different for HyperCard as compared to MacPaint?
Atkinson: Well, I wrote MacPaint on a Lisa. I compiled and ran on a Lisa on a Profile. I would always then download to a Macintosh and try it. The first year and a half of doing HyperCard, I did on a Mac Plus with a hard disk. And that was pretty nice that I could actually take my whole working environment with me to a hotel and hide out there, because all I needed to take was a hard disk and a Mac. Then I got hooked on this faster Mac II prototype that cut my compile time. As the program got bigger, a forty-five minute compile was a killer. If I could cut that down to about six minutes, then I figured I'd marry myself to the big clunker.
Goodman: What about the personal environment?
Atkinson: Well, when I was working on QuickDraw, that was all mine. I wrote it all myself. I didn't let anybody look at my sources. I listened to what people needed in the labs, but it was my call on everything. Then I went from that to MacPaint, which was more of a shared thing, because I would accept a lot of kibitzing from people who would use it as I was developing it. Still, I wrote every line of code. Nobody saw the source until after we had shipped.
What I'm finding with HyperCard is that this trend in the way I work is progressing. I'm working more with other people. There are twenty people who've got their fingers in the pie on HyperCard. There are four that are writing serious chunks of the code. It's still basically my baby. I insist that everything be right, and I read all the code. I probably have written 70 percent of the code that's in there. Dan Winkler is the next major contributor to the code. I needed somebody who could keep up with me, who would go with my style. Dan was willing to learn from me and pick up my style. We work back and forth, we hand code back and forth. We both work here at my house, and I see, in general, I'm able to accomplish a lot more by working with other people.
That's good because I think what HyperCard is all about is sharing information. A program's soul has a lot to do with the people who are making it and what they're thinking about as they're making it. We're not making this to make money. We're not making this to make Apple happy. We're making this because we want to share something. One of the things that I find myself sharing is my understanding of programming. I find that I'm a very good programmer and that I know something about computer graphics. Those two things I think I can teach by example in HyperCard.
Goodman: HyperCard was almost not an Apple product. What's the real story behind that?
Atkinson: Well, Apple has felt a lot of pressure from third-party developers to not ship application software because it competes with the third-party developers. And there are aspects of HyperCard that are application-like. It comes with an address book. That's like an application. There are other aspects of it that are clearly a tool to build things with the authoring aspects of it. But as Apple saw it as potentially application-like, there was this big question: If Apple sees itself as system software people and this thing is somewhere between system software and application software, what happens to it?
This came up at the time that they unbundled MacPaint from inside the Macintosh box. After telling me, "Don't worry, we're not going to unbundle it," and then telling me, "Oh, it's too late, it's fait accompli now," I felt that somebody wasn't dealing with me fairly. The relationship that I had with Apple was going downhill fast. I have a very special relationship with Apple, it's a relationship of trust and cooperation. I need them and they need me, but it's never been one of an arms-length contract relationship. I don't work very well that way. I'm not good at that kind of thing. I like to work with people who are rooting for me and helping me. So at a certain point I said, "I see you unbundling MacPaint. I see Donn Denman, who wrote this beautiful BASIC for Mac, not being able to publish his beautiful work that he put three years into."
I could see something coming for HyperCard. I went to John Sculley and said, "I'm leaving. I have to leave Apple at this point because I want to write a really great program for Macintosh. I can do Apple a lot of good, but I want to make sure that it gets out." John was very supportive, and was enthusiastic about the potential of HyperCard. He talked it over with the executive staff and let me give a presentation. I said, "What I want is to bundle it. If you want to bundle it, I'll write it for Apple. You can have the exclusive proprietary rights and all that stuff, but if you don't want to bundle it then it's time for me to graduate from Apple and go on and be an independent developer myself. I'm going to get this out to people whether I give it away or whether I get Apple to give it away." To this day, Apple is not required to bundle it. They only have an option that if they choose to accept it, then they have to bundle it. They could say no to me right now, but at least then its ownership reverts to me so that I can give it away, which I would do. You see, I want it to be given away so that it can be a base for people to share.
What I will be really excited about is the stacks that come back to me that other people have done. The Apple II when we first put it out was sort of a wrench that we didn't say what it was good for. People would use it for the most amazing things. We'd be kind of flabbergasted when we'd see this Apple II controlling some oil drilling rig. I think that HyperCard has that same flavor to it. The reward of sharing it will come right back and I will get amazing stacks from people who have information but don't have the tools to get it out now.
Goodman: If you were a software reviewer in the magazines, what would you try to compare HyperCard to?
Atkinson: HyperCard is an authoring tool, and as such I would compare it with authoring tools like Owl's Guide, like Plato, like Pilot, like Logo. Those are the fairest comparisons, I think. It's an authoring tool. It's kind of a personal organizer, too, but that comes as a result of the authoring tool rather than as the motivating factor. You can use it as a hub for launching documents and applications. In that sense, it's almost like a Finder.
Goodman: Where do you think you'll find these people starting to apply it first? Where do you expect the first applications?
Atkinson: Education will pick it up right away. There is a growing number of Macintoshes in lower education, but higher education already has lots of Macintoshes and it's so easy to whip together a teaching application.
Goodman: What kinds of things do you expect them to be doing?
Atkinson: For example, in the Exploratorium Science Museum in San Francisco, I would expect them to be using Macintoshes and HyperCard to give hands-on interactive demonstrations of physics principles they are trying to teach, where you poke at something and try this, sort of a little HyperCard lab.
The people at Stanford have been a very early seed for HyperCard. It's being used in a film-editing class where they go out with a video camera and shoot all the scenes for a movie. Then they put them on a video disk. Students come in and use a HyperCard stack that has a storyboard, one little miniature picture for each sequence that was shot. They build the movie out of it. You splice it and lay it together by touching on things in HyperCard and play it back and edit it, make this shorter or make that longer, or move this scene out of here and put it over there.
The end result is that each student has a diskette with a HyperCard stack on it that represents his editing of that film. Nobody's ever had to actually get his hands wet in a darkroom or do any acetate-splicing or videotape-editing and everybody's got the same stuff to work with, so you're concentrating on the editing job rather than the cinematography. Now it's very interesting to see the different renditions different people can come up with because of their own artistic tastes. You can take the same raw stuff and come up with very different pieces based on it.
Goodman: Let's move on to HyperTalk. Programming languages all seem to come down an ancestral path. What are the language ancestors of HyperTalk?
Atkinson: The first one is English. I really tried to make it English-like. It also borrows some concepts from SmallTalk — the inheritance concepts. If you send a message to the card and the card doesn't understand it, it falls through the background of it. If the background doesn't understand it, it falls through to the stack, and if the stack doesn't understand it, it falls through to HyperCard. That inheritance is similar to what they have in SmallTalk. HyperTalk has some background in Pascal just because that's what I speak a lot of. HyperCard itself is about 80 percent Pascal and 20 percent Assembly language.
Goodman: How did HyperTalk evolve?
Atkinson: The first design of the HyperTalk language I did in a five-day period. I had an outline that's still basically what it does now: the way you name things — buttons, fields, cards, backgrounds, stacks, the Home Stack — and they way you name things — card one, first card, last card, any card— those kinds of things. Then Dan Winkler came into the picture. He took this rough mockup and breathed life into it and made it real. He's developed a full language out of it, and we worked together back and forth, kibitzing a lot. But Dan has certainly done the bulk of the work of making it real. He's done a lot of thinking on how to implement it well and how to make it cleanly organized inside.
Goodman: Who were some of the other key players on Apple's HyperCard team that helped put HyperCard together?
Atkinson: Ted and Carol Kaehler were really big players. Carol did the on-line help system. Here was an author, not a programmer, who, in the course of working with HyperCard, had to use all the features. She had to become a HyperCard programmer. I often find that I design by pull. In the HyperTalk language and in HyperCard, the capabilities were really determined by what people wanted to do with it, so Carol has been a big pull there.
Ted has been kind of a kibitzer to me. We talk algorithms and we talk about what we really want, and stuff like that. Adam Paal has been a major contributor. He's been Mr. Printing and has solved the really difficult problem of how to get a LaserWriter that's running Adobe software, which doesn't like bit maps, to not only take bit maps, but go quickly. He's dealt with that, he's dealt with, well, what are the different ways that people would like to print the stuff. It would be safe to say that I wrote all of HyperCard except for the language and the printing and the sound manager. The language is Dan's, the printing is Adam's, and the sound manager is Ted's.
That's the breakdown of who contributed to the code. Lots of people contributed to shaping it. You know, I asked people what they wished they had. The biggest thing is to get people to try to build something with it. Then they run into what they really need, not just what they think they need.
Goodman: Was anybody at Apple running interference for you while you coded?
Atkinson: Yes. Chris Espinosa has been a godsend. He's my product manager and he's been with Apple for a long, long time. I think I've been there nine years and he's one of the few people who has been there longer. I've worked with marketing types before, and it's always grating because they didn't understand the technical side of things. Chris has been real good and he "gets it." He really sees what HyperCard can do for the world. And there aren't enough people at Apple who see that. They may see it more as it gets out and as people start doing stuff with it and they start reaping the benefits, but Chris really has that vision and can see what HyperCard is going to do to people's lives and to Apple's future.
Goodman: What parts of HyperCard are you most proud of?
Atkinson: Well, I'm really proud of the fast search. I worked out a way to make searching about 200 times faster than a more obvious way. I'm proud of the bit map packing. Bit maps are packed about 30 to 1, and it's really tough to get them that tight. The dominating factor in the size of stacks is how big the bit maps are. So it's something I'm always chewing on in the back of my mind: Is there a way to get the bit map smaller?
Overall, the thing that I'm most excited about in HyperCard is its "opening up" potential. You know. we talk about open architecture hardware. Well, this is open architecture software where, really, you can go inside a stack that somebody else wrote and look and see how it was done and modify it and tweak it a little to tune it for your uses and learn from what someone else has done.
Goodman: What's the chance that someone from the MS-DOS or OS/2 worlds will replicate HyperCard?
Atkinson: Oh, 99 percent. Something like that. I think it's a good enough tool that people will say, "Of course," and start working on clones. It will take them a while to get anything as smooth. You know, I've had a couple years jump on them. When that starts to happen, I hope that they'll do one that's data compatible, so we can exchange stacks between "PC Card" and HyperCard. To that end, we intend to make all the file formats public. We won't actively go out and help people get it up on the PC, but we're helping them an awful lot just by giving all the details of the file format. I'd like to see Apple get an edge. but I'm really more interested in the worldwide sharing of information. That will happen much better if there is a compatible program on all the different machines. I'd like to see one on the Apple II, which doesn't have any conflict for Apple, and so I will be helping a programmer at Apple make an Apple II version of HyperCard.
Goodman: Is there still a lot of proprietary technology built into HyperCard?
Atkinson: Well, what's proprietary? You know, you get a great idea, you use it. There's no idea that's totally original. The question is, can you get a patent on it? Sure, there's stuff in there we could easily get patents on. What's really right in terms of your long-term goals? What are you trying to do? Yes, we want to keep Apple in business so they can do other great stuff, but we also want to make an environment for sharing.
Goodman: Do you have future plans for HyperCard?
Atkinson: Oh, do I have anything else? Yes. I have many, many future plans. I've got a big laundry list of features. I know what they all are, and I know which ones are most pressing. I'd rather not tell everybody what they are because I want to have a little bit of jump when those features come out.
Goodman: But we can expect to see additions?
Atkinson: Lots of improvements. This is not going to be abandoned like MacPaint was. Pretty much Apple put me on something else and gave the maintenance of MacPaint to someone else and then kept shuffling that from one person to another, and MacPaint never got maintained. My full-time schedule for the next couple years is improving HyperCard. I have a lot in front of me that I need to do.